home *** CD-ROM | disk | FTP | other *** search
- 12:25:31 12/8/1985
-
- I recently decided (for myself, at least) to settle the question of how
- much speed increase one could expect from the addition of a NEC V series
- chip to an IBM PC (or compatible) computer. I was mainly concerned with
- the type of operations that I might do on a regular basis. For the sake of
- completeness, I included some of the BYTE benchmarks.
-
- All tests were performed on the same computer (AT&T 6300), the same hard
- drive (Syquest 306R - 5 meg removable), with the same ram resident software
- loaded. The hard drive was returned to original condition after any test
- that wrote to the drive.
-
- Timings were kept using a program called TIMER.COM from Leroy Casterline.
- It seems to be accurate to .05 seconds.
-
- ARCHIVE TEST
-
- Using ARC version 4.5, 19 files with a total size of 1,018,271 bytes were
- archived. Test files follow:
-
- . <DIR> 06Dec85 21:54 PIBTERM .007 4608 09Nov85 03:41
- .. <DIR> 06Dec85 21:54 PIBTERM .COM 37592 09Nov85 03:42
- APP2_1 .EXE 41380 17Jun85 14:46 PIBTERM .FON 10001 08Oct85 03:30
- APPFILE .DOC 6005 19Jun85 18:37 QMOD112 .000 50688 16Nov85 12:03
- PIBTERM .000 80128 09Nov85 03:35 QMOD112 .COM 45811 16Nov85 12:04
- PIBTERM .001 25088 09Nov85 03:20 QMOD112 .DOC 54400 17Nov85 16:21
- PIBTERM .002 26624 09Nov85 03:26 REFLEX .EXE 267420 15Jun85 17:04
- PIBTERM .003 10752 09Nov85 03:32 REFLEX2 .EXE 260715 16Oct85 14:58
- PIBTERM .004 15616 09Nov85 03:31 XPC2_1 .COM 39842 19Jun85 13:50
- PIBTERM .005 20736 09Nov85 03:42 XPCFILE .DOC 9089 19Jun85 18:37
- PIBTERM .006 11776 09Nov85 03:40
- 1018271 Bytes in 21 File(s); 1060864 bytes free.
-
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 1 32:49.35 32.49.35
- NEC V30 1 27:23.26 27.23.26
-
- INCREASE DUE TO NEC V30 CHIP -- 16.56%
-
-
-
- LUU (LIBRARY AND SQUEEZE) TEST
-
- Using LUU 2.1, the same 19 files with a total size of 1,018,271 bytes were
- libraried and squeezed.
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 2 5:25.22,5:25.0 5:25.11
- NEC V30 3 5:02.64,5:05.44,5:06.71 5:04.93
-
- INCREASE DUE TO NEC V30 CHIP -- 6.21%
-
-
- AZTEC C COMPILE, ASSEMBLE, AND LINK USING A MAKE FILE
-
- A 21k .exe file was generated from 10 independently compiled and assembled
- modules. All environmental variables remained constant throughout the
- tests.
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 2 2:55.98,2:54.72 2:55.35
- NEC V30 2 2:49.5,2:47.97 2:48.735
-
- INCREASE DUE TO NEC V30 CHIP -- 3.77%
-
-
- DBASE III INDEX TEST
-
- Using version 1.1 of Ashton Tate's Dbase III, a 1,170,579 byte .dbf file
- was indexed on a concatenated string using the following program:
-
- ? time()
- use monthly
- index on str(tag,7,4)+dtoc(date_comp) to test
- ? time()
- close data
-
- The structure for the monthly file follows:
-
- Structure for database : monthly.dbf
- Number of data records : 15000
- Date of last update : 12-06-1985
- Field Field name Type Width Dec
- ----- ---------- ---- ----- ---
- 1 TAG Numeric 7 4
- 2 DATE_COMP Date 8
- 3 PARTS Numeric 6 2
- 4 PART_TYPE Character 2
- 5 TAX Numeric 5 2
- 6 LABOR Numeric 6 2
- 7 LABR_TYPE Character 2
- 8 SERV_SUPL Numeric 5 2
- 9 SHIPPING Numeric 5 2
- 10 SHIP_TYPE Character 2
- 11 OTHER Numeric 5 2
- 12 OTHR_TYPE Character 2
- 13 TECH Numeric 3 0
- 14 DELVR_TO Numeric 2 0
- 15 FLAG Character 2
- 16 BRAND Character 12
- 17 UNIT_TYPE Character 3
- ** Total ** 78
-
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 1 1:36:49.0 1:36.49.0
- NEC V30 1 1:32:58.0 1:32:58.0
-
- INCREASE DUE TO NEC V30 CHIP -- 3.98%
-
-
- BASIC COMPILER TEST
-
- Using IBM's Basic Compiler version 1.0, RBBS5A (w/B9 merges) was compiled
- as per the instructions in the documentation for the B9 merges from Mark
- Seiden.
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 2 3:25.64,3:23.94 3:24.79
- NEC V30 3 3:09.66,2:59.5,3:14.5 3:07.88
-
- INCREASE DUE TO NEC V30 CHIP -- 8.25%
-
-
- LINK TEST
-
- Using the IBM Personal Computer Linker version 2.2, the RBBS .obj file was
- linked with the supporting modules to create an .exe file.
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 2 2:03.75,2:03.97 2:03.86
- NEC V30 3 1:48.48,1:47.71,1:47.98 1:48.06
-
- INCREASE DUE TO NEC V30 CHIP -- 12.76%
-
- SIEVE TEST IN C
-
- The following sieve test was taken from the Byte Benchmarks and the source
- code follows:
-
- /*
- * UNIX Operating Sytem Implementation Test #4
- *
- * "Benchmarking UNIX Systems", BYTE magazine August 1984
- *
- * No benchmark suite would be complete without the ever-popular
- * sieve benchmark. It is a good test of compiler efficiency and
- * CPU throughput. Below is a sieve benchmark as presented in the
- * January 1983 issue of BYTE, with some other minor changes: Register
- * declarations have been added, and some unnecessary (from our
- * standpoint) printf() statements removed.
- *
- * Instructions:
- * Compile by: cc -O -s -o sieve sieve.c
- *
- * The -O option says to use the optimizer.
- * The -s option says to strip the namelist from the
- * object file after linking.
- * The -o option says to place the oblect file in the file
- * specified by the next argument.
- *
- * Time by: /bin/time sieve
- *
- * Results:
- * In the past, the elapsed time has been used, since most
- * operating systems can measure real time. Actually, user
- * time is a better value.
- *
- */
-
- /* Eratosthenes Sieve Prime Number program in C */
- #define TRUE 1
- #define FALSE 0
- #define SIZE 8190
-
- char flags[SIZE + 1];
-
- main() {
- register int i, prime, k, count, iter;
- /* printf("10 iterations\n"); */ /* We don't need this */
- for (iter = 1; iter <= 10; iter++) { /* do program 10 times */
- count = 0; /* prime counter */
- for (i = 0; i <= SIZE; i++) /* set all flags TRUE */
- flags[i] = TRUE;
- for (i = 0; i <= SIZE; i++) {
- if (flags[i]) { /* found a prime */
- prime = i + i + 3; /* twice index + 3 */
- /* printf("\n%d", prime); */ /* nor this */
- for (k = i + prime; k <= SIZE; k += prime)
- flags[k] = FALSE; /* kill all multiples */
- count++; /* primes found */
- }
- }
- }
- /* printf("\n%d primes.",, count); */ /* primes found on tenth pass */
- }
-
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 4 4.6,4.7,4.1,4.1 4.375
- NEC V30 4 3.41,3.41,3.35,3.30 3.3675
-
- INCREASE DUE TO NEC V30 CHIP -- 23.03%
-
-
- EMPTY LOOP TEST IN C
-
- Another Byte test with the following source code:
-
- /*
- * UNIX Operating Sytem Implementation Test #7
- *
- * "Benchmarking UNIX Systems", BYTE magazine August 1984
- *
- * This program tests long integer incrementation. It is
- * taken from USENET news article "megatest.186".
- *
- * Instructions:
- * Compile by: cc -O -s -o loop loop.c
- *
- * The -O option says to use the optimizer.
- * The -s option says to strip the namelist from the
- * object file after linking.
- * The -o option says to place the oblect file in the file
- * specified by the next argument.
- *
- * Time by: /bin/time loop
- *
- * Results:
- * Altough not very significant, it does say something about the
- * speed of the processor, since the compiler would hopefully
- * compile the "i++" as an INCR instruction and not an ADD
- * instruction. The benchmark is presented here for historical
- * reasons.
- *
- */
-
- main() {
- long i;
- for (i = 0; i < 1000000; i++)
- ;
- printf("Done\n");
- }
-
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 4 16.37,16.37,16.36,16.31 16.3525
- NEC V30 4 14.23,14.23,14.17,14.23 14.215
-
- INCREASE DUE TO NEC V30 CHIP -- 13.07%
-
-
- FCALL1 - FUNCTION CALL IN C
-
- Another Byte Benchmark with the source code that follows:
-
- /*
- * UNIX Operating Sytem Implementation Test #3
- *
- * "Benchmarking UNIX Systems", BYTE magazine August 1984
- *
- * This program enables precise arithmetic calculations of user function
- * overhead by subtracting the execution user time when compiled without
- * using a function from execution user time using a function.
- *
- * Instructions:
- * Compile by: cc -O -DEMPTY -s -o fcalle fcall.c
- * and
- * cc -O -DASSIGN -s -o fcalla fcall.c
- *
- * The -O option says to use the optimizer.
- * The -s option says to strip the namelist from the
- * object file after linking.
- * The -o option says to place the oblect file in the file
- * specified by the next argument.
- *
- * Time by: /bin/time fcalle
- * and
- * /bin/time fcalla
- *
- * Results:
- * Since the user time is more accurate than the real time
- * and since system time effectively does not contribute to
- * the real time number, we can use the difference between
- * the user times in seconds as an accurate numerical account
- * of the function call overhead.
- *
- */
-
- #define TIMES 50000
-
- main()
- /* the first way of doing things - use a function call */
- #ifdef EMPTY
- {
- register unsigned int i, j;
- for (i = 0; i < TIMES; i++)
- j = empty(i);
- }
-
- /* the empty function */
- empty(k)
- register unsigned int k;
- {
- return(k);
- }
- #endif
-
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 4 1.82,1.81,1.75,1.76 1.785
- NEC V30 4 1.70,1.70,1.70,1.71 1.7025
-
- INCREASE DUE TO NEC V30 CHIP -- 4.62%
-
-
- FCALL2 - FUNCTION CALL IN C ANOTHER WAY
-
-
- Yet another Byte Benchmark -- source follows:
-
- /*
- * UNIX Operating Sytem Implementation Test #3
- *
- * "Benchmarking UNIX Systems", BYTE magazine August 1984
- *
- * This program enables precise arithmetic calculations of user function
- * overhead by subtracting the execution user time when compiled without
- * using a function from execution user time using a function.
- *
- * Instructions:
- * Compile by: cc -O -DEMPTY -s -o fcalle fcall.c
- * and
- * cc -O -DASSIGN -s -o fcalla fcall.c
- *
- * The -O option says to use the optimizer.
- * The -s option says to strip the namelist from the
- * object file after linking.
- * The -o option says to place the oblect file in the file
- * specified by the next argument.
- *
- * Time by: /bin/time fcalle
- * and
- * /bin/time fcalla
- *
- * Results:
- * Since the user time is more accurate than the real time
- * and since system time effectively does not contribute to
- * the real time number, we can use the difference between
- * the user times in seconds as an accurate numerical account
- * of the function call overhead.
- *
- */
-
- #define TIMES 50000
-
- main()
- #ifdef ASSIGN
- /* the second way of doing things - without a function call */
- {
- register unsigned int i, j;
- for (i = 0; i < TIMES; i++)
- j = i;
- }
- #endif
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 4 .66,.66,.66,.66 .66
- NEC V30 4 .60,.54,.61,.55 .575
-
- INCREASE DUE TO NEC V30 CHIP -- 12.88%
-
-
- CALC TEST IN BASIC (compiled)
-
- Another Byte Benchmark -- source follows:
-
- 5 REM: the calculation benchmark
- 10 NR = 5000
- 20 DEFSNG A-Z
- 30 A = 2.71828
- 40 B = 3.14159
- 50 C = 1
- 60 FOR I = 1 TO NR
- 70 C = C * A
- 80 C = C * B
- 90 C = C / A
- 100 C = C / B
- 110 NEXT I
- 120 PRINT "done"
- 130 PRINT "error = "; C - 1
-
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 4 5.76,5.66,5.72,5.66 5.7
- NEC V30 5 4.39,4.45,4.34,4.34,4.34 4.372
-
- INCREASE DUE TO NEC V30 CHIP -- 23.3%
-
-
- SIEVE TEST IN BASIC (compiled)
-
- Another Byte Benchmark -- source follows:
-
- 5 REM: the sieve benchmark
- 10 SIZE = 7000
- 20 DIM FLAGS(7001)
- 30 PRINT "start one iteration"
- 40 COUNT = 0
- 50 FOR I = 0 TO SIZE
- 60 FLAGS(I) = 1
- 70 NEXT I
- 80 FOR I = 0 TO SIZE
- 90 IF FLAGS(I) = 0 THEN 170
- 100 PRIME = I + I + 3
- 110 K = I + PRIME
- 120 IF K > SIZE THEN 160
- 130 FLAGS(K) = 0
- 140 K = K + PRIME
- 150 GOTO 120
- 160 COUNT = COUNT + 1
- 170 NEXT I
- 180 PRINT "done: "; COUNT; " primes found"
-
-
- CHIP # TEST RUNS TIMINGS (HRS:MINS:SECS.XX) AVERAGE
- INTEL 8086 4 9.18,9.6,9.1,9.6 9.37
- NEC V30 4 8.24,8.13,8.13,8.13 8.1575
-
- INCREASE DUE TO NEC V30 CHIP -- 12.94%
-
-
- SUMMARY
-
- The final average results over 12 tests show a net increase in speed
- attributable to the NEC V series chip of 11.78%
-
- Should you install the chip in your computer? Take a close look at the
- individual test results. If an operation you perform often would benefit
- from the chip, then by all means, add it to your system. I am told that
- Lotus and other spreadsheets will recalculate somewhere between 20% and 40%
- faster on the NEC chip. I could not test this claim.
-
- I found it very interesting that the LUU program took only 5 mins+ to lib
- and squeeze 1.1 megs, but the ARC program took 27-32 minutes. The ARC'd
- file showed a space savings of only some 29K. Not such a good return for
- the extra 25 minutes.
-
- All the C programs were compiled with Aztec C version 2.20d.
-
- These tests performed courtesy of TERRAPIN STATION BBS in Minneapolis, MN.
- A BBS for programmers and technically oriented folk!
- 24 hours a day -- 1200/2400
- 612/623-0152
-
- Beta test site and authorized dealer for MultiTech modems.
- We sell the NEC chips and assorted other esoteric hardware and software.
- See bulletin #8 when you log in.
-
- Howard Ekman
- Sysop -- Terrapin Station BBS
-